package org.aurora.framework.boot.domain;

import java.io.Serializable;

/**
 * name: DomainRepository
 * <p>
 * desc: 领域实体仓储
 * </p>
 * create date: 2025-03-21 17:06:08
 *
 * @author cao.yong
 */
public interface DomainRepository<E extends Entity<ID>, ID extends Serializable> {
    /**
     * 保存
     * @param entity 领域对象
     */
    void save(E entity);

    /**
     * 删除
     * @param id 领域对象的唯一标识
     */
    void delete(ID id);

    /**
     * 删除
     * @param entity 领域对象
     */
    void delete(E entity);

    /**
     * 更新
     * @param entity 领域对象
     */
    void update(E entity);
    /**
     * 查询领域对象
     * @param id 领域对象唯一标识
     * @return 领域对象
     */
    E findById(ID id);
}
